import { request } from "@/utils/service"
import type * as Common from "./types/common"

/** 获取下拉框列表 */
export function fetchEnumSelectList(selectName: string) {
  return request<Common.SelectResponseData>({
    url: `/common/selectEnums/${selectName}`,
    method: "get"
  })
}

/** 获取下拉框列表 */
export function fetchSelectList(type: string) {
  return request<Common.SelectResponseData>({
    url: `/common/selectByType/${type}`,
    method: "get"
  })
}

// 这里获取 VITE_BASE_API，只会执行一次，文件加载时获取该值
const baseUrl = import.meta.env.VITE_BASE_API
// 下载文件  绑定到一个按钮上的点击事件
export function downloadFile(event: Event, formSearchData: Record<string, any>, url: string): void {
  const $btn = event.target as HTMLButtonElement // 获取点击的按钮
  $btn.disabled = true // 禁用按钮，防止重复提交

  // 创建一个临时表单
  const form = document.createElement("form")
  form.method = "POST"
  // 在这里使用 baseUrl，已经从外面获取到
  const fullUrl = `${baseUrl}${url}`
  form.action = fullUrl

  // 判断 formSearchData 是否存在，如果存在则遍历添加隐藏字段
  if (formSearchData && typeof formSearchData === "object") {
    Object.keys(formSearchData).forEach((key) => {
      const value = formSearchData[key]
      // 仅当字段值不是 undefined 或 null 时才添加到表单
      if (value !== undefined && value !== null) {
        const input = document.createElement("input")
        input.type = "hidden"
        input.name = key
        input.value = String(value) // 确保 value 是字符串类型
        form.appendChild(input)
      }
    })
  }

  // 创建一个隐藏的 iframe
  const iframe = document.createElement("iframe")
  iframe.style.display = "none"
  document.body.appendChild(iframe)

  // 将表单提交到 iframe
  form.target = iframe.name // 将表单的目标设置为 iframe
  document.body.appendChild(form)
  form.submit()

  // 提交后移除表单
  document.body.removeChild(form)

  // 恢复按钮状态
  setTimeout(() => {
    $btn.disabled = false
  }, 5000)
}
